package cn.sc.summer.calculate.service;

import cn.sc.summer.calculate.form.*;
import cn.sc.summer.calculate.po.SysTask;
import cn.sc.summer.calculate.po.SysTaskLog;
import cn.sc.summer.calculate.vo.DefinedTaskInfoVO;
import cn.sc.summer.calculate.vo.TaskInfoVO;
import cn.sc.summer.constant.model.PageResult;

/**
 * 接口：定时任务接口
 *
 * @author a-xin
 * @date 2024/2/4 13:51
 */
public interface TaskService {

    /**
     * 初始化定时任务信息
     */
    void initSchedule();

    /**
     * 更新定时任务
     *
     * @param form 任务信息
     */
    void updateTask(UpdateTaskForm form);

    /**
     * 操作定时任务
     *
     * @param form 任务信息
     */
    void operationTask(OperationTaskForm form);

    /**
     * 新增定时任务
     *
     * @param form 任务信息
     * @return 任务信息
     */
    TaskInfoVO addTaskInfo(TaskInfoForm form);

    /**
     * 更新定时任务
     *
     * @param form 任务信息
     * @return 任务信息
     */
    TaskInfoVO updateTaskInfo(TaskInfoForm form);

    /**
     * 删除定时任务
     *
     * @param taskId 任务ID
     */
    void deleteTaskInfo(String taskId);

    /**
     * 分页获取定时任务
     *
     * @param form 任务分页信息
     * @return 分页定时任务
     */
    PageResult<TaskInfoVO> getTaskInfo(GetTaskInfoForm form);

    /**
     * 分页获取已定义的定时任务
     *
     * @param form 任务分页信息
     * @return 已定义定时任务
     */
    PageResult<DefinedTaskInfoVO> getDefinedTaskInfo(DefinedTaskInfoForm form);

    /**
     * 保存定时任务日志信息
     *
     * @param sysTaskLog 执行日志信息
     */
    void saveSysTaskLog(SysTaskLog sysTaskLog);

    /**
     * 根据执行方法获取执行任务信息
     *
     * @param beanClass 执行日志方法
     */
    SysTask getSysTaskInfoByBeanClass(String beanClass);

}
